package com.haoyun.mirage.user.service;

import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.service.IService;
import com.haoyun.common.utils.Query;
import com.haoyun.mirage.user.model.dto.RoleDTO;
import com.haoyun.mirage.user.model.entity.SysRole;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author twg
 * @since 2018-05-30
 */
public interface ISysRoleService extends IService<SysRole> {

    /**
     * 通过部门ids，获取带有部门信息的角色列表
     *
     * @param deptIds
     * @return
     */
    List<RoleDTO> findRolesWithDeptByDeptIds(String... deptIds);

    /**
     * 通过角色ID，获取角色、部门信息
     *
     * @param roleId
     * @return
     */
    RoleDTO getRoleWithDeptByRoleId(Long roleId);

    /**
     * 添加角色
     *
     * @param roleDTO
     * @return
     */
    Boolean insertRole(RoleDTO roleDTO);

    /**
     * 更新角色、角色部门关系
     *
     * @param role
     * @return
     */
    Boolean updateRole(RoleDTO role);

    /**
     * 通过部门ID查询角色列表
     *
     * @param deptId 部门ID
     * @return 角色列表
     */
    List<RoleDTO> findByDeptId(Long deptId);

    /**
     * 通过分页查询带有部门信息的角色列表
     *
     * @param query
     * @return
     */
    Page<RoleDTO> findRoleWithDeptByPage(Query query);

    /**
     * 通过公司id、角色名，判断角色是否存在
     *
     * @param roleName
     * @param compId
     * @return
     */
    Boolean isExist(String roleName, Long compId);

    /**
     * 通过ID，删除角色信息
     *
     * @param id
     * @return
     */
    Boolean deleteRoleById(Long id);

}
